package service;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

import model.Cliente;
import model.Farmacia;

public class ClienteService {
	
	protected EntityManager entityManager;
	
	public ClienteService(EntityManager entityManager) {
		this.entityManager = entityManager;
	}
	
	public Cliente criaCliente(String email,
			String endereco, String nome, String telefone) {
		Cliente cli = new Cliente();
		cli.setEmail(email);
		cli.setEndereco(endereco);
		cli.setNome(nome);
		cli.setTelefone(telefone);
		
		insereCliente(cli);
		
		return cli;
	}
	
	public Cliente alteraFarmacia(Long clienteId, Farmacia farmacia) {
		Cliente cliente = entityManager.getReference(Cliente.class, clienteId);
		if (cliente != null) {
			cliente.setFarmacia(farmacia);
		}
		return cliente;
	}
	
	public List<Cliente> getTodosClientes() {
		TypedQuery<Cliente> q = entityManager.createNamedQuery(
				"Cliente.todosRegistrosClientes", Cliente.class);
		List<Cliente> result = q.getResultList();
		return result;
	}
	
	public Cliente findCliente(Long id) {
		Cliente cliente = entityManager.getReference(Cliente.class, id);
		return cliente;
	}
	
	public List<Cliente> listaClientes() {
		TypedQuery<Cliente> query = entityManager.createQuery(
				"SELECT e FROM Cliente e", Cliente.class);
		return query.getResultList();
	}
	
	public void deletaClientes() {
		TypedQuery<Cliente> query = entityManager.createQuery(
				"DELETE FROM Cliente", Cliente.class);
		query.executeUpdate();
	}
	
	public void insereCliente(Cliente emp) {
		entityManager.persist(emp);
	}
	
	public void removeCliente(Long id) {
		Cliente cli = findCliente(id);
		if (cli != null) {
			entityManager.remove(cli);
		}
	}

}
